草庐IT

MySQL UPDATE 和 SELECT 一次完成

全部标签

c# - 强制调用一次异步方法

假设我有一个类需要使用InitializeAsync()方法执行一些异步初始化。我想确保只执行一次初始化。如果另一个线程在初始化过程中调用此方法,它将“等待”直到第一个调用返回。我正在考虑以下实现(使用SemaphoreSlim)。有更好/更简单的方法吗?publicclassMyService:IMyService{privatereadonlySemaphoreSlimmSemaphore=newSemaphoreSlim(1,1);privateboolmIsInitialized;publicasyncTaskInitializeAsync(){if(!mIsInitializ

c# - 如何在 winforms 桌面应用程序中制作自动完成文本框

我有一个单词列表。该列表包含大约100-200个文本字符串(实际上是地铁站的名称)。我想制作一个自动完成的文本框。例如,用户按“N”字母,然后出现一个(结束)适当的选项(只有一个选项)。必须选择结尾。怎么做?PS1:我想,有一个文本框控件具有如下属性:ListAppropriateOptions{/*...*/}PS2:对不起我的英语。如果您不明白->问我,我会尽力解释! 最佳答案 以防@leniel的链接失效,这里有一些代码可以解决这个问题:AutoCompleteStringCollectionallowedTypes=newA

c# - 用 foreach 遍历 Dictionary,这是按什么顺序完成的?

假设我有一个字典,我按特定顺序添加每个键和值条目。现在,如果我希望稍后能够以添加条目的相同顺序迭代此Dictionary,这是我在该字典上使用简单的foreach循环获得的顺序吗?如果没有,我会很高兴听到我该怎么做,我知道这可以用List而不是Dictionary轻松完成,但我不想到。谢谢 最佳答案 普通的Dictionary不保证项目的顺序。你需要OrderedDictionary如果您想维护添加到其中的订单项目。请注意,在.Net框架中没有此类的通用版本,因此要么必须放弃一些类型安全性,要么找到其他实现(即https://www

c# - IEnumerable.Select() 可以跳过一个项目吗?

我有这个功能:publicIEnumerableEnumPrograms(){returndev.AudioSessionManager2.Sessions.AsEnumerable().Where(s=>s.GetProcessID!=0).Select(s=>{try{returnProcess.GetProcessById((int)s.GetProcessID).ProcessName;}catch(ArgumentException){returnnull;}});}try..catch是必需的,因为可能存在具有不再存在的PID的session。我想跳过它们。有没有办法从Se

C# WebClient 第一次运行缓慢

我正在使用WebClient从网站下载字符串(仅包含纯文本,没有其他内容),因此我使用DownloadString方法:WebClientwc=newWebClient();stringstr=wc.DownloadString("http://blah");它工作正常,但问题是第一次下载字符串需要很长时间,比如5秒。之后它工作得很快。为什么会发生这种情况,如何克服这个问题? 最佳答案 将WebClient对象的Proxy属性设置为null应该可以消除您看到的延迟。或者,如果您已将系统配置为使用代理,则可以使用WebRequest.

c# - 让多个线程工作并等待所有线程完成的最佳方法是什么?

我正在编写一个简单的应用程序(同样适用于我的妻子:-P),它可以对可能存在的大量图像进行一些图像处理(调整大小、时间戳等)。所以我正在编写一个可以同步和异步执行此操作的库。我决定使用Event-basedAsynchronousPattern.使用此模式时,您需要在工作完成时引发一个事件。这是我不知道什么时候完成的地方。所以基本上,在我的DownsizeAsync方法(缩小图像尺寸的异步方法)中,我正在做这样的事情:publicvoidDownsizeAsync(string[]files,stringdestination){foreach(varnameinfiles){strin

c# - RunWorkerAsync调用一次,BackgroundWorker的DoWork被调用两次?

我已经在它工作的类中创建了一个后台worker,但是如果我调用并等到结束运行,第二次调用它,它会执行两次相同的过程我认为bw.DoWork+=有问题privatevoidbutton1_Click(objectsender,EventArgse){nptest.test.start("null","null");}namespacenptest{classtest{publicstaticvoidstart(stringstr,stringstrb){if(bw.IsBusy!=true){bw.WorkerSupportsCancellation=true;bw.DoWork+=(o

c# - 使用 IronPython 时禁用第一次机会异常但调试器在 try...catch 中停止

应在不停止调试器的情况下执行以下代码:varengine=Python.CreateEngine(AppDomain.CurrentDomain);varsource=engine.CreateScriptSourceFromString("Foo.Do()");varcompiledCode=source.Compile(newPythonCompilerOptions{Optimized=true});try{compiledCode.Execute(engine.CreateScope(newDictionary{{"Foo",newFoo()}}));MessageBox.Sh

c# - FilePathResult 的已完成事件

我想在用户完成下载后做一些事情publicclassTestController:Controller{publicFilePathResultIndex(){returnFile("path/to/file","mime");}}我尝试的是将以下事件添加到测试Controller,但它们都在用户完成下载之前触发(除了永远不会调用的析构函数)protectedoverridevoidEndExecute(IAsyncResultasyncResult){base.EndExecute(asyncResult);}protectedoverridevoidEndExecuteCore(I

c# - CodedUI 测试 - 为整个测试集启动一次浏览器

我正在VS2010中编写一些编码的UI测试来测试Web应用程序。我希望能够为解决方案中的整组测试打开浏览器一次,然后在测试完成后再次关闭浏览器。我已经在一个方法上尝试了AssemblyInitialize属性,其中包含我的BrowserWindow.Launch,但是当我运行它时出现以下异常:AssemblyInitializationmethodOrdersGridTesting.SuiteSetup.Loginthrewexception.Microsoft.VisualStudio.TestTools.UITest.Extension.TechnologyNotSupported